您现在的位置:首页 > 傻言傻语 > 各种问题,让你防不胜防
各种问题,让你防不胜防
[发布时间:2015-06-25  阅读次数: 4958]

又遇到了n年前类似的bug,单个用户和本机调试的时候啥问题没有,多个用户使用的时候就会出现数据串了的问题,明明A用户的数据,在B用户的界面上出现了。

首先想到的自然是n年前的错误,错用了static。但我怎么可能在一条河中摔倒两次,这次项目中从头到尾就没有static。

然后想办法重现问题,着实费了番脑筋。终于成功搭建了个局域网环境,把台机模拟成服务器加客户机A,把笔记本模拟成客户机B,中间碰到若干小问题,一一攻破之,终于成功重现bug。

下面定位bug的原因。首先想难道是cookie的原因?cookie会串?百度后根本没有这种情况的讨论。还不放心,把cookie数据直接messagebox弹出来,证明无错。

继续观察代码,发现除了关键查询出错,其他地方都没有数据串的问题。关键查询数据来自于sybase数据库,其中为了实现数据分页和排序动态创建了一张临时表,这个用法老版本代码并没用过。难道是这里出错?于是修改代码,不用临时表,不分页,直接查询显示数据后发现bug果然没了。

bug定位成功,下面消除bug。分页加排序肯定是需要的,但我当初为什么要用临时表来着?时间较长,当时思路已经忘了。于是按照老思路重新拼sql语句,select top加order by,却怎么都不行。百度之,原来sybase不支持select top和order by,猛然想起当初就是这个原因创建了临时表解决方案,没想到又带来了这个问题。那该怎么处理?网上说什么游标排序,测试了,不行。

然后想,关键是不清楚为什么临时表没有drop掉,或者没有及时drop掉,造成了这个问题。既然如此,如果每个不同用户独享不同名称的临时表,问题是否能解决呢?按照此思路重写代码,果然成功。

结论:条条大道通罗马。